
#include <vector>
#include "Utils.h"
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\core\core.hpp>


void aplica_mascara(cv::Mat&im,const cv::Mat &mascara)
{

	
	for(int x=0; x<im.cols; x++)
	{
		for(int y=0; y<im.rows; y++)
		{
			if(mascara.at<uchar>(y,x)==0)
			{
				
				im.at<cv::Vec3b>(cv::Point(x,y))[0] = 0;		
				im.at<cv::Vec3b>(cv::Point(x,y))[1] = 0;		
				im.at<cv::Vec3b>(cv::Point(x,y))[2] = 0;
			}
		}
	}

}

int main8( int argc, char** argv )
{
	if(argc < 2)
	{
		return -1;
	}


	std::vector<std::string> args(argv, argv + argc);

	std::vector<std::string>files;
	Utils::GetFilesInDirectory(args[1],"*.BMP",files);

	if(files.size()==0)
		files.push_back(args[1]);


	for(size_t i = 0 ; i < files.size();i++)
	{
		auto &file = files[i];
		cv::Mat img = cv::imread(file,0),imgGray,imgThr;
		cv::Mat imgColor = cv::imread(file);

		cv::GaussianBlur(img,imgGray,cv::Size(3,3),3);

		cv::threshold(imgGray,imgThr,100,255,cv::THRESH_BINARY_INV);
		
		//::aplica_mascara(imgColor,imgThr);
			
		cv::imshow("blah0",imgThr);
		//cv::imshow("blah",imgThr);
		cv::imshow("blah",imgColor);
		cv::Mat imgmed;

		cv::medianBlur(imgColor,imgmed,3);
		cv::imshow("blah2",imgmed);

		
		cv::imwrite("C:\\Users\\William\\Compartilhado\\PIS\\etc\\imgBlured.bmp",imgmed);
		cv::waitKey();


	}

	return 1;
}